const lib = require("../lib")
const path = require("path");
const mongoConnected = require("../lib/mongoose_connect");
const mongoModels = require("../lib/mongoose_schemas");
const runPara = require("run-parallel-limit");
const Toolbox = require("../lib/toolbox");
const fs = require("fs");


mongoConnected.then(async _ => {
  // console.log(Date.now(), Date());
  // await lib.insert2Mongodb('I:\\PUBG-TELE-2006\\JSONS\\6ae3fc75-a052-11ea-8759-067fb09ace1a-telemetry.json')
  // debugger;return;
  fs.readFile("I:\\PUBG-TELE-2006\\insert-logs.txt", async (err, data) => {
    let str = data.toString();
    let macthed = str.match(/OK\! (.*json)/g);
    let jsonNames = macthed.map(e => e.replace("OK! ", ""))
    let jsonPaths = jsonNames.map(e => path.join('I:\\PUBG-TELE-2006\\JSONS', e));
    for (let p of jsonPaths) {
      let o_exists = await Toolbox.getStats(p);
      if (o_exists.ok && o_exists.stats.isFile()) {
        await new Promise(r => fs.rename(p, path.join('I:\\PUBG-TELE-2006\\JSONS\\done', path.basename(p)), () => {
          r();
        }))
        console.log(p,'done');
      }else{
    
      }
      // debugger
    }
    debugger
  })

  return
  mongoModels.Player.findOne({
    "names": {
      $elemMatch: { $eq: "MCC_Freedom" }
    }
  }).then(doc => {
    // debugger
    let match_ids = doc.match_ids;
    mongoModels.Match.find({
      match_id: {
        $in: match_ids
      }
    }).then(async matches => {
      // debugger
      console.log("matches.length", matches.length, Date(), Date.now());
      // debugger
      let querys = matches.map(e => new Promise(async (resolve, reject) => {
        let findDamages = await mongoModels.Event.find({
          match_id: e.match_id,
          _T: "LogPlayerTakeDamage",
          "attacker.accountId": 'account.245976b28ba14a1d8dd26716ac3b54dc'
        });
        if (findDamages.length) {
          let damageTotal = findDamages.map(e => e._doc.damage).reduce((a, b) => a + b);
          // debugger
          return resolve({
            match_id: e.match_id,
            damage: damageTotal
          })
        } else {
          return resolve({
            match_id: e.match_id,
            damage: 0
          })
        }
        // debugger
      }));
      let o_results = await Promise.all(querys);
      debugger
    })
  });


  // let q = mongoModels.Event
  //   .aggregate([
  //     {
  //       "$match": {
  //         _T: "LogMatchEnd",
  //         // "$or": [
  //         // {
  //         //   "attacker.name": "MCC_Freedom"
  //         // },
  //         // {
  //         //   "victim.name": "MCC_Freedom"
  //         // }
  //         // ],
  //         match_id: "match.bro.official.pc-2018-05.steam.squad.as.2019.10.31.06.bba0d8f0-26ac-45a5-9d92-1990bd964c7d",
  //       }
  //     },
  //     // {
  //     //   "$project": {
  //     //     "damageReason": 1,
  //     //     "killer": 1,
  //     //     "victim": 1,
  //     //     "match_id": 1,
  //     //     "damageCauserName":1,
  //     //     "damageTypeCategory":1
  //     //   }
  //     // },
  //     // {
  //     // '$group': {
  //     // _id: "$attacker.name",
  //     // "涉及的Match_ids": {
  //     // $push: "$match_id"
  //     // }
  //     // }
  //     // }
  //   ])
  //   // .find({

  //   //   // "damageReason": "HeadShot"
  //   // })
  //   // .explain()
  //   .then((docs, b) => {
  //     console.log(Date.now(), Date());

  //     // debugger
  //   })

  // console.log(q);
  // debugger
}).catch(err => {
  debugger
})
